package com.zx.webflux.wrapper;


import lombok.*;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * @program: common
 * @description: 分页结果包装类
 * @author: zhou  xun
 * @create: 2022-09-26 23:34
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PageWrapper<T> extends ResponseWrapper implements Serializable {
    /**
     * 分页数据
     */
    private List<T> data = new ArrayList<>();
    /**
     * 总条数
     */
    private Integer total = 0;
    /**
     * 总页数
     */
    private Integer totalPage = 0;
    /**
     * 当前页码
     */
    private Integer currentPageNum = 0;
    /**
     * 页面大小
     */
    private Integer pageSize = 0;

    /**
     * <p>分页的总页数：<br>
     * 有两种实现方式：<br>
     * 方法1：<br>
     * totalPage = total % pagesize == 0 ? total / pagesize : Math.ceil(total / pagesize) ;
     * </p>
     * <p>
     * 方法2：<br>
     * totalPage = (total + pagesize -1) / pagesize;<br>
     * pagesize - 1 是 total / pagesize 的最大的余数，所以(total + pagesize -1) / pagesize就得到总页数
     * </p>
     *
     * @return
     */
    public Integer setTotalPage(Integer size) {
        return totalPage = (total + size - 1) / size;
    }
}